package com.plate.common.web.aspect;

import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

/**
 * @ClassName DictAspect
 * @Description TODO
 * @Author jiaxd
 * @Date 2023年11月19日 21:29
 * @Version 1.0
 */

@Aspect
@Component
@Slf4j
public class DictAspect {

//    @Autowired
//    private ISystemFeignService dictService;

    /**
     * 定义切点Pointcut
     */
    @Pointcut("@annotation(com.plate.common.web.annotation.AutoLog)")
    public void dict() {
    }

    @Around("dict()")
    public Object doAround(ProceedingJoinPoint pjp) throws Throwable {
        Object result = pjp.proceed();

        return result;
    }

//    private void parseDictText(Object result) {
//        if (result instanceof TableDataInfo) {
//            List<JSONObject> items = new ArrayList<>();
//            for (Object record : (((TableDataInfo) result).getRows())) {
//                ObjectMapper mapper = new ObjectMapper();
//                String json = "{}";
//                try {
//                    //解决@JsonFormat注解解析不了的问题详见SysAnnouncement类的@JsonFormat
//                    json = mapper.writeValueAsString(record);
//                } catch (JsonProcessingException e) {
//                    log.error("json解析失败" + e.getMessage(), e);
//                }
//                JSONObject item = JSONObject.parseObject(json);
//                //update-begin--Author:scott -- Date:20190603 ----for：解决继承实体字段无法翻译问题------
//                //for (Field field : record.getClass().getDeclaredFields()) {
//                for (Field field : ObjectConvertUtils.getAllFields(record)) {
//                    //update-end--Author:scott  -- Date:20190603 ----for：解决继承实体字段无法翻译问题------
//                    if (field.getAnnotation(Dict.class) != null) {
//                        String code = field.getAnnotation(Dict.class).dictCode();
//                        String key = String.valueOf(item.get(field.getName()));
//
//                        //翻译字典值对应的txt
//                        String textValue = translateDictValue(code, key);
//                        //log.debug(" 字典Val : " + textValue);
//                        //log.debug(" __翻译字典字段__ " + field.getName() + Constants.DICT_TEXT_SUFFIX + "： " + textValue);
//                        item.put(field.getName() + Constants.DICT_TEXT_SUFFIX, textValue);
//                    }
//                    //date类型默认转换string格式化日期
//                    if ("java.util.Date".equals(field.getType().getName()) && field.getAnnotation(JsonFormat.class) == null && item.get(field.getName()) != null) {
//                        SimpleDateFormat aDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//                        item.put(field.getName(), aDate.format(new Date((Long) item.get(field.getName()))));
//                    }
//                }
//                items.add(item);
//            }
//            ((TableDataInfo) result).setRows(items);
//
//        }
//    }
//
//    private String translateDictValue(String code, String key) {
//        if (Strings.isEmpty(key)) {
//            return null;
//        }
//
//        StringBuilder textValue = new StringBuilder();
//        String[] keys = key.split(",");
//        for (String k : keys) {
//            String tmpValue = null;
//            //log.debug(" 字典 key : " + k);
//            if (k.trim().length() == 0) {
//                continue; //跳过循环
//            }
//
//            tmpValue = dictService.getInfo(code, key);
//
//
//            if (tmpValue != null) {
//                if (!"".equals(textValue.toString())) {
//                    textValue.append(",");
//                }
//                textValue.append(tmpValue);
//            }
//        }
//    }


}
